#install.packages("stringr")
library(stringr)
dat <- read.csv('mobile-food-sf.csv', stringsAsFactors = FALSE)
times <- c('12AM', '12PM', '9AM', '8PM')
str_sub(times, end=-3)
## [1] "12" "12" "9" "8"
str_sub(times, -2)
## [1] "AM" "PM" "AM" "PM"
str_replace(times, pattern = 'AM|PM', replacement = '')
## [1] "12" "12" "9" "8"
hours <- as.numeric(str_replace(times, pattern = 'AM|PM', replacement = ''))
periods <- str_sub(times, start = -2)
to24 <- function(hours, periods) {
hr24 <- c()
for (i in 1:length(hours)) {
if (periods[i] == 'PM') {
hr24 <- c(hr24, 12 + hours[i] %% 12)
} else {
hr24 <- c(hr24, hours[i] %% 12)
}
}
hr24
}
starthrs <- as.numeric(str_replace(dat$starttime, pattern = 'AM|PM', replacement = ''))
startperiods <- str_sub(dat$starttime, start = -2)
start24 <- to24(starthrs, startperiods)
dat$start <- start24
endhrs <- as.numeric(str_replace(dat$endtime, pattern = 'AM|PM', replacement = ''))
endperiods <- str_sub(dat$endtime, start = -2)
end24 <- to24(endhrs, endperiods)
dat$end <- end24
dat$duration <- dat$end - dat$start
lat_lon <-str_replace_all(dat$Location, pattern = '\\(|\\)', replacement = '')
lat_lon <- str_split(lat_lon, pattern = ',')
lat <- lapply(lat_lon, function(x) x[1])
lat <- as.numeric(unlist(lat))
lon <- lapply(lat_lon, function(x) x[2])
lon <- as.numeric(unlist(lon))
dat$lat <- lat
dat$lon <- lon
library(RgoogleMaps)
# coordinates for center of the map
center <- c(mean(dat$lat, na.rm = TRUE), mean(dat$lon, na.rm = TRUE))
# zoom value
zoom <- min(MaxZoom(range(dat$lat, na.rm = TRUE),
range(dat$lon, na.rm = TRUE)))
# san francisco map
map1 <- GetMap(center=center, zoom=zoom, destfile = "san-francisco.png")
PlotOnStaticMap(map1, dat$lat, dat$lon, col = "#ed4964", pch=20)

library(ggmap)
## Loading required package: ggplot2
dat <- na.omit(dat)
sbbox <- make_bbox(lon = dat$lon, lat = dat$lat, f = .1)
sbbox
## left bottom right top
## -122.48867 37.69985 -122.36281 37.81595
# get a 'terrain' map
sf_map <- get_map(location = sbbox, maptype = "terrain", source = "google")
## Warning: bounding box given to google - spatial extent only approximate.
## converting bounding box to center/zoom specification. (experimental)
## Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=37.757897,-122.425744&zoom=13&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false
ggmap(sf_map) +
geom_point(data = dat,
mapping = aes(x = lon, y = lat),
color = "red", alpha = 0.2, size = 1)
## Warning: Removed 98 rows containing missing values (geom_point).

dat$optionaltext[1:3]
## [1] "Tacos, Burritos, Tortas, Quesadillas, Mexican Drinks, Aguas Frescas"
## [2] "Cold Truck: sandwiches, drinks, snacks, candy, hot coffee"
## [3] "Cold Truck: Pre-packaged Sandwiches, Various Beverages, Salads, Snacks"
foods <- dat$optionaltext[1:10]
burritos <- dat[str_detect(dat$optionaltext, "urritos") == TRUE,]
burritos <- na.omit(burritos)
ggmap(sf_map) +
geom_point(data = burritos,
mapping = aes(x = lon, y = lat),
color = "blue", alpha = 0.2, size = 1)
## Warning: Removed 18 rows containing missing values (geom_point).

animals <- c('dog', 'cat', 'bird', 'dolphin', 'lion',
'zebra', 'tiger', 'wolf', 'whale', 'eagle',
'pig', 'osprey', 'kangaroo', 'koala')
grep("o*", animals, value=TRUE)
## [1] "dog" "cat" "bird" "dolphin" "lion" "zebra"
## [7] "tiger" "wolf" "whale" "eagle" "pig" "osprey"
## [13] "kangaroo" "koala"
grep("o?", animals, value=TRUE)
## [1] "dog" "cat" "bird" "dolphin" "lion" "zebra"
## [7] "tiger" "wolf" "whale" "eagle" "pig" "osprey"
## [13] "kangaroo" "koala"
grep("o+", animals, value=TRUE)
## [1] "dog" "dolphin" "lion" "wolf" "osprey" "kangaroo"
## [7] "koala"
grep("oo", animals, value=TRUE)
## [1] "kangaroo"
grep("o[^o]", animals, value=TRUE)
## [1] "dog" "dolphin" "lion" "wolf" "osprey" "koala"
grep("(a|e|i|o|u)(a|e|i|o|u)", animals, value=TRUE)
## [1] "lion" "eagle" "kangaroo" "koala"
grep("[^aeiou][^aeiou][^aeiou]", animals, value=TRUE)
## [1] "dolphin" "osprey"
grep("^...$", animals, value=TRUE)
## [1] "dog" "cat" "pig"
grep("^....$", animals, value=TRUE)
## [1] "bird" "lion" "wolf"
files <- c('sales1.csv', 'orders.csv', 'sales2.csv',
'sales3.csv', 'europe.csv', 'usa.csv', 'mex.csv',
'CA.csv', 'FL.csv', 'NY.csv', 'TX.csv',
'sales-europe.csv', 'sales-usa.csv', 'sales-mex.csv')
grep("[0-9]", files, value=TRUE)
## [1] "sales1.csv" "sales2.csv" "sales3.csv"
grep("^([^0-9])*$", files, value=TRUE)
## [1] "orders.csv" "europe.csv" "usa.csv"
## [4] "mex.csv" "CA.csv" "FL.csv"
## [7] "NY.csv" "TX.csv" "sales-europe.csv"
## [10] "sales-usa.csv" "sales-mex.csv"
grep("[a-z]", files, value=TRUE)
## [1] "sales1.csv" "orders.csv" "sales2.csv"
## [4] "sales3.csv" "europe.csv" "usa.csv"
## [7] "mex.csv" "CA.csv" "FL.csv"
## [10] "NY.csv" "TX.csv" "sales-europe.csv"
## [13] "sales-usa.csv" "sales-mex.csv"
grep("[A-Z]", files, value=TRUE)
## [1] "CA.csv" "FL.csv" "NY.csv" "TX.csv"
grep("-", files, value=TRUE)
## [1] "sales-europe.csv" "sales-usa.csv" "sales-mex.csv"
grep("^([^-])*$", files, value=TRUE)
## [1] "sales1.csv" "orders.csv" "sales2.csv" "sales3.csv" "europe.csv"
## [6] "usa.csv" "mex.csv" "CA.csv" "FL.csv" "NY.csv"
## [11] "TX.csv"
str_replace(files, 'csv', 'txt')
## [1] "sales1.txt" "orders.txt" "sales2.txt"
## [4] "sales3.txt" "europe.txt" "usa.txt"
## [7] "mex.txt" "CA.txt" "FL.txt"
## [10] "NY.txt" "TX.txt" "sales-europe.txt"
## [13] "sales-usa.txt" "sales-mex.txt"
str_split(files, pattern='\\.')
## [[1]]
## [1] "sales1" "csv"
##
## [[2]]
## [1] "orders" "csv"
##
## [[3]]
## [1] "sales2" "csv"
##
## [[4]]
## [1] "sales3" "csv"
##
## [[5]]
## [1] "europe" "csv"
##
## [[6]]
## [1] "usa" "csv"
##
## [[7]]
## [1] "mex" "csv"
##
## [[8]]
## [1] "CA" "csv"
##
## [[9]]
## [1] "FL" "csv"
##
## [[10]]
## [1] "NY" "csv"
##
## [[11]]
## [1] "TX" "csv"
##
## [[12]]
## [1] "sales-europe" "csv"
##
## [[13]]
## [1] "sales-usa" "csv"
##
## [[14]]
## [1] "sales-mex" "csv"
split_chars <- function(str) {
str_split(str, "")
}
split_chars('Go Bears!')
## [[1]]
## [1] "G" "o" " " "B" "e" "a" "r" "s" "!"
split_chars('Expecto Patronum')
## [[1]]
## [1] "E" "x" "p" "e" "c" "t" "o" " " "P" "a" "t" "r" "o" "n" "u" "m"
reverse_chars <- function(str) {
paste(rev(unlist(str_split(str, ""))), collapse='')
}
reverse_chars("gattaca")
## [1] "acattag"
reverse_chars("Lumox Maxima")
## [1] "amixaM xomuL"